#include "../include/TableSymboles.h"

// Construit une table des symboles valués vide
TableSymboles::TableSymboles() : m_table()
{

}


SymboleValue * TableSymboles::chercheAjoute(Symbole s)
{
    vector<SymboleValue*>::iterator it = this->m_table.begin();
    while(it < this->m_table.end() && (**it).getChaine() < s.getChaine())
    {
        it++;
    }
    if(it == this->m_table.end() || (**it).getChaine() != s.getChaine())        // si pas trouvé...
    {
        it = this->m_table.insert(it, new SymboleValue(s));
    }
    return *it;
}

ostream & operator << (ostream & cout, TableSymboles ts)
// affiche ts sur cout
{
    cout << endl << "Contenu de la Table des Symboles Values :" << endl
         <<         "=========================================" << endl << endl;
    for(unsigned int i = 0; i < ts.m_table.size(); i++)
    {
        cout << "  " << * (ts.m_table[i]) << endl;
    }
    cout << endl;
    return cout;
}
